package br.com.tcc.automacao.usuario.controle;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.SessionAttributes;

import br.com.tcc.automacao.usuario.negocio.Usuario;
import br.com.tcc.automacao.usuario.negocio.UsuarioNegocio;
import br.com.tcc.automacao.util.PalavrasProp;
import br.com.tcc.automacao.util.SingletonFactory;
import br.com.tcc.automacao.util.Uteis;



@Controller
@SessionAttributes
public class UsuarioFormControle {
	
	UsuarioNegocio usuarioNegocio;
	public UsuarioFormControle() {
		super();
		usuarioNegocio = (UsuarioNegocio) SingletonFactory.getSingleton(UsuarioNegocio.class);
	}
	
	@ModelAttribute("usuario")
	public Usuario getUsuario() {
		return new Usuario();
	}
	
	@RequestMapping(value = "/restrito/usuario-form", method = RequestMethod.GET)
	public String lista(ModelMap model,String id, HttpServletRequest request){
		
		Usuario usuarioLogado = UsuarioNegocio.obterSessaoUsuarioLogado(request);
		
		if(UsuarioNegocio.possuiPermissao(usuarioLogado.getPermissoes(), "editar-usuario")){
			
			UsuarioNegocio usuarioNegocio = new UsuarioNegocio();
			Usuario usuario = new Usuario();
			
			if(id != null){
				
				Long idLong = Uteis.converterParaLong(id);
				if(idLong != null && idLong > 0){
					usuario = usuarioNegocio.consultarUsuario(idLong);
				}
			}
			model.put("usuario", usuario);
			
			request.setAttribute("id", id);
			
			return "/restrito/usuario-form";
		}else {
			model.put("usuario", usuarioLogado);
			request.setAttribute("id", usuarioLogado.getId());
			return "/restrito/usuario-form";
		}
		
	}
	
	
	@RequestMapping(value = "/restrito/usuario-form", method = RequestMethod.POST)
	public void adiciona(ModelMap model, @ModelAttribute("contato") Usuario usuario, BindingResult result, HttpServletRequest request, HttpServletResponse response) throws Exception{
		
		
		
		String respostaJSON = null;
		if(usuario.getId() == null){
			usuarioNegocio.adicionarUsuario(usuario);
			respostaJSON = "{\"sucesso\":true,\"mensagem\":\"Adicionado com sucesso\"}";
		}else{
			usuarioNegocio.atualizarUsuario(usuario);			
			respostaJSON = "{\"sucesso\":true,\"mensagem\":\"Adicionado com sucesso\"}";
		}
		
		
//		String respostaJSON = "{\"sucesso\":true,\"mensagem\":[\"msg 1\",\"msg 2\",\"msg 3\"],\"name\":\"mkyong\"}";
		Uteis.respostaJson(respostaJSON, request, response);
		return;
	}
	
}